package main

import (
	"fmt"
	"sync"
)

var counter int = 0 // 全局变量
var wg sync.WaitGroup

// 声明互斥锁，防止同时操作一个变量，出现死锁
var mu sync.Mutex

func increment() {
	mu.Lock() // 使用互斥锁，加锁
	counter++
	// 解锁
	mu.Unlock()
	wg.Done()
}

// 测试互斥   go build -race main.go   -> main.exe
func main() {
	for i := 1; i <= 10; i++ {
		wg.Add(1)
		go increment()
	}
	wg.Wait()
	fmt.Println("程序结束：", counter)
}
